/******************************************************************************
** 公司名称：天津柯迪斯科技有限公司
** 版权信息：
** 文件名称： App_Protocol_(BF_AND)_CAN.h
** 模块名称： 八方CAN和安乃达CAN协议处理模块
** 版 本 号： V1.0
** 作    者： 蒲磊
**
** 修改记录： 版本     修改人      时间         修改内容
******************************************************************************/
#ifndef __APP_PROTOCOL_BF_ANANDA_H_
#define __APP_PROTOCOL_BF_ANANDA_H_

/******************************************************************************
* 头文件
******************************************************************************/
#include "App_Protocol_BF_AND_ANANDA_CAN.h"
#include "App_Protocol_BF_AND_BF_CAN.h"
/******************************************************************************
* 宏定义 ('#define')
******************************************************************************/
#define CAN_LOOP_CYCLE              10      /*vPROTOCOL_Loop()函数的循环调用周期，单位：ms*/
#define gxCAN_RxQueue               0x00    /*Can接收FIFO队列ID*/
#define gxCAN_TxQueue               0x01    /*Can发送FIFO队列ID*/
#define gxCAN_RxQueue_Len           (15 * 30)    /*FIFO长度，30个元素长度*/
#define gxCAN_TxQueue_Len           (15 * 30)

#define NULL_PROTOCOL       0
#define BF_PROTOCOL         1
#define AND_PROTOCOL        2
/******************************************************************************
* 类型定义 ('typedef')
******************************************************************************/


/******************************************************************************
* 全局变量声明
******************************************************************************/

/******************************************************************************
* 函数声明
******************************************************************************/
void vPROTOCOL_Init(void);
void vPROTOCOL_Loop(void);
void vPROTOCOL_ResetCommunicationOverTime(void);
#if defined N32L40X
void vPROTOCOL_CanMsgToProtocolMsg(CanRxMessage *pCanMessage);
#else
void vPROTOCOL_CanMsgToProtocolMsg(can_rx_message_type *pCanMessage);
#endif
void vPROTOCOL_Set_Value_When_PowerOn(void);
void vPROTOCOL_Set_Button(uint8_t KeyValue);

void vPROTOCOL_Set_Pas_Range(int8_t Pas_Range);
void vPROTOCOL_Set_Lamp(uint8_t State);
void vPROTOCOL_Set_Pas(int8_t Pas);
void vPROTOCOL_Set_ClearTrip(uint8_t State);

uint8_t     ucPROTOCOL_Get_Type(void);
uint16_t    usPROTOCOL_Get_Speed(void);
uint8_t     ucPROTOCOL_Get_Errcode(void);
uint16_t    usPROTOCOL_Get_Power(void);
int8_t       cPROTOCOL_Get_Soc(void);
uint16_t    usPROTOCOL_Get_Voltage(void);
uint8_t     ucPROTOCOL_Get_WalkState(void);
uint8_t     ucPROTOCOL_Get_PowerOff(void);

uint16_t    usPROTOCOL_Get_Wheel(void);
uint16_t    usPROTOCOL_Get_Speed_Limit(void);

#endif

